package mop.controller;

/**
 * Interface for a Visitors to Controllers
 * @author Mop Team 7
 * 
 * !! LoginUserController not part of this because Login User shouldn't be visited
 */
public interface ControllerVisitor 
{
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(AssignTaskToProjectController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(ChangeClockController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(CreateProjectController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(CreateResourceController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(CreateTaskController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(CreateUserController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(FocusWorkController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(MakeResourceReservationController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(ModifyTaskDetailsController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(RemoveTaskController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(UpdateTaskStatusController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(LoginUserController c);
	
	/**
	 * Action to be done by visitor for passed Controller
	 * @param c the controller to be used
	 */
	public void action(RemoveProjectController c);
	

}
